/* Copyright  2009
   @Author
   Richard Changde Yin            e-mail yinchangde@hotmail.com

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; version 2 of the License.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
   
   

#include <server_includes.h>
#include CSTDINT_H
#include <item/copy_string.h>

void Item_copy_string::copy()
{
  String *res=item->val_str(&str_value);
  if (res && res != &str_value)
              str_value.copy(*res);
    
  null_value=item->null_value;
}

/* ARGSUSED */
String *Item_copy_string::val_str(String *)
{
  // Item_copy_string is used without fix_fields call
  if (null_value)
                return (String*) 0;
  return &str_value;
}


my_decimal *Item_copy_string::val_decimal(my_decimal *decimal_value)
{
  // Item_copy_string is used without fix_fields call
  if (null_value)
                return 0;
  string2my_decimal(E_DEC_FATAL_ERROR, &str_value, decimal_value);
  
  return (decimal_value);
}

